import com.adeptia.indigo.services.transform.ScriptedService;
import com.adeptia.indigo.system.Context;
import com.fasterxml.jackson.databind.ObjectMapper;
import redis.clients.jedis.Jedis;

import java.io.BufferedReader;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.util.HashMap;

public class redisStream {

    public static void postMessage(InputStream inputStream, ScriptedService service){
        try {
            Context context = service.getContext();
            String username = (String) context.get("redis.username"), password = (String) context.get("redis.password"), redisHost = (String) context.get("redis.host"), streamName= (String) context.get("redis.streamName");
            int redisPort = Integer.parseInt((String) context.get("redis.port"));
            Jedis jedis = new Jedis(redisHost,redisPort);
//            jedis.auth(username,password);
            BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream));
            String line = reader.readLine();
            String json = line;
            for (int p = 1; line != null; line = reader.readLine()) {
                json +=line;
            }
            HashMap<String,String> datamap = new HashMap<>();
            ObjectMapper mapper = new ObjectMapper();
            datamap = mapper.readValue(json, HashMap.class);
            jedis.xadd(streamName,null,datamap);
            jedis.close();
        }
        catch(Exception e){
            e.printStackTrace();
        }
    }
}
